(function ($) {
  "use strict";

  function thmSwiperInit() {
    // swiper slider
    const swiperElm = document.querySelectorAll(".thm-swiper__slider");
    swiperElm.forEach(function (swiperelm) {
      const swiperOptions = JSON.parse(swiperelm.dataset.swiperOptions);
      let thmSwiperSlider = new Swiper(swiperelm, swiperOptions);
    });
  }

  function thmTinyInit() {
    // tiny slider
    const tinyElm = document.querySelectorAll(".thm-tiny__slider");
    tinyElm.forEach(function (tinyElm) {
      const tinyOptions = JSON.parse(tinyElm.dataset.tinyOptions);
      let thmTinySlider = tns(tinyOptions);
    });
  }

  // window load event
  // 页面加载完成后加载
  $(window).on("load", function () {
    if ($(".preloader").length) {
      $(".preloader").fadeOut();
    }
    thmSwiperInit();
    thmTinyInit();

    if ($(".countdown-one__list").length) {
      let deadLine = new Date(Date.parse(new Date()) + 12 * 24 * 60 * 60 * 1000);
      $(".countdown-one__list").countdown({
        date: deadLine,
        render: function (date) {
          this.el.innerHTML =
            "<li> <div class='days'> <i>" +
            date.days +
            "</i> <span>Days</span> </div> </li>" +
            "<li> <div class='hours'> <i>" +
            date.hours +
            "</i> <span>Hours</span> </div> </li>" +
            "<li> <div class='minutes'> <i>" +
            date.min +
            "</i> <span>Minutes</span> </div> </li>" +
            "<li> <div class='seconds'> <i>" +
            date.sec +
            "</i> <span>Seconds</span> </div> </li>";
        }
      });
    }

    if ($(".scroll-to-target").length) {
      $(".scroll-to-target").on("click", function () {
        var target = $(this).attr("data-target");
        // animate
        $("html, body").animate({
            scrollTop: $(target).offset().top
          },
          1000
        );
        return false;
      });
    }

    if ($(".contact-form-validated").length) {
      $(".contact-form-validated").validate({
        // initialize the plugin
        rules: {
          name: {
            required: true
          },
          email: {
            required: true,
            email: true
          },
          message: {
            required: true
          },
          subject: {
            required: true
          }
        },
        submitHandler: function (form) {
          // sending value with ajax request
          $.post(
            $(form).attr("action"),
            $(form).serialize(),
            function (response) {
              $(form).parent().find(".result").append(response);
              $(form).find('input[type="text"]').val("");
              $(form).find('input[type="email"]').val("");
              $(form).find("textarea").val("");
            }
          );
          return false;
        }
      });
    }

    // mailchimp form
    if ($(".mc-form").length) {
      $(".mc-form").each(function () {
        var Self = $(this);
        var mcURL = Self.data("url");
        var mcResp = Self.parent().find(".mc-form__response");

        Self.ajaxChimp({
          url: mcURL,
          callback: function (resp) {
            // appending response
            mcResp.append(function () {
              return '<p class="mc-message">' + resp.msg + "</p>";
            });
            // making things based on response
            if (resp.result === "success") {
              // Do stuff
              Self.removeClass("errored").addClass("successed");
              mcResp.removeClass("errored").addClass("successed");
              Self.find("input").val("");

              mcResp.find("p").fadeOut(10000);
            }
            if (resp.result === "error") {
              Self.removeClass("successed").addClass("errored");
              mcResp.removeClass("successed").addClass("errored");
              Self.find("input").val("");

              mcResp.find("p").fadeOut(10000);
            }
          }
        });
      });
    }

    if ($(".video-popup").length) {
      $(".video-popup").magnificPopup({
        type: "iframe",
        mainClass: "mfp-fade",
        removalDelay: 160,
        preloader: true,

        fixedContentPos: false
      });
    }

    if ($(".img-popup").length) {
      var groups = {};
      $(".img-popup").each(function () {
        var id = parseInt($(this).attr("data-group"), 10);

        if (!groups[id]) {
          groups[id] = [];
        }

        groups[id].push(this);
      });

      $.each(groups, function () {
        $(this).magnificPopup({
          type: "image",
          closeOnContentClick: true,
          closeBtnInside: false,
          gallery: {
            enabled: true
          }
        });
      });
    }

    function dynamicCurrentMenuClass(selector) {
      let FileName = window.location.href.split("/").reverse()[0];

      selector.find("li").each(function () {
        let anchor = $(this).find("a");
        if ($(anchor).attr("href") == FileName) {
          $(this).addClass("current");
        }
      });
      // if any li has .current elmnt add class
      selector.children("li").each(function () {
        if ($(this).find(".current").length) {
          $(this).addClass("current");
        }
      });
      // if no file name return
      if ("" == FileName) {
        selector.find("li").eq(0).addClass("current");
      }
    }

    if ($(".main-menu__list").length) {
      // dynamic current class
      let mainNavUL = $(".main-menu__list");
      dynamicCurrentMenuClass(mainNavUL);
    }

    if ($(".main-menu").length && $(".mobile-nav__container").length) {
      let navContent = document.querySelector(".main-menu").innerHTML;
      let mobileNavContainer = document.querySelector(".mobile-nav__container");
      mobileNavContainer.innerHTML = navContent;
    }
    if ($(".sticky-header__content").length) {
      let navContent = document.querySelector(".main-menu").innerHTML;
      let mobileNavContainer = document.querySelector(".sticky-header__content");
      mobileNavContainer.innerHTML = navContent;
    }

    if ($(".mobile-nav__container .main-menu__list").length) {
      let dropdownAnchor = $(
        ".mobile-nav__container .main-menu__list .dropdown > a"
      );
      dropdownAnchor.each(function () {
        let self = $(this);
        let toggleBtn = document.createElement("BUTTON");
        toggleBtn.setAttribute("aria-label", "dropdown toggler");
        toggleBtn.innerHTML = "<i class='fa fa-angle-down'></i>";
        self.append(function () {
          return toggleBtn;
        });
        self.find("button").on("click", function (e) {
          e.preventDefault();
          let self = $(this);
          self.toggleClass("expanded");
          self.parent().toggleClass("expanded");
          self.parent().parent().children("ul").slideToggle();
        });
      });
    }

    if ($(".mobile-nav__toggler").length) {
      $(".mobile-nav__toggler").on("click", function (e) {
        e.preventDefault();
        $(".mobile-nav__wrapper").toggleClass("expanded");
        $("body").toggleClass("locked");
      });
    }

    if ($(".search-toggler").length) {
      $(".search-toggler").on("click", function (e) {
        e.preventDefault();
        $(".search-popup").toggleClass("active");
        $('.mobile-nav__wrapper').removeClass('expanded');
        $("body").toggleClass("locked");
      });
    }
    if ($(".mini-cart__toggler").length) {
      $(".mini-cart__toggler").on("click", function (e) {
        e.preventDefault();
        $(".mini-cart").toggleClass("expanded");
        $('.mobile-nav__wrapper').removeClass('expanded');
        $("body").toggleClass("locked");
      });
    }
    if ($(".odometer").length) {
      $(".odometer").appear(function (e) {
        var odo = $(".odometer");
        odo.each(function () {
          var countNumber = $(this).attr("data-count");
          $(this).html(countNumber);
        });
      });
    }

    if ($(".dynamic-year").length) {
      let date = new Date();
      $(".dynamic-year").html(date.getFullYear());
    }

    if ($(".wow").length) {
      var wow = new WOW({
        boxClass: "wow", // animated element css class (default is wow)
        animateClass: "animated", // animation css class (default is animated)
        mobile: true, // trigger animations on mobile devices (default is true)
        live: true // act on asynchronously loaded content (default is true)
      });
      wow.init();
    }

    if ($("#donate-amount__predefined").length) {
      let donateInput = $("#donate-amount");
      $("#donate-amount__predefined")
        .find("li")
        .on("click", function (e) {
          e.preventDefault();
          let amount = $(this).find("a").text();
          donateInput.val(amount);
          $("#donate-amount__predefined").find("li").removeClass("active");
          $(this).addClass("active");
        });
    }

    $("#accordion .collapse").on("shown.bs.collapse", function () {
      $(this).prev().addClass("active");
      $(this).prev().parent().addClass("active");
    });

    $("#accordion .collapse").on("hidden.bs.collapse", function () {
      $(this).prev().removeClass("active");
      $(this).prev().parent().removeClass("active");
    });

    $("#accordion").on("hide.bs.collapse show.bs.collapse", (e) => {
      $(e.target).prev().find("i:last-child").toggleClass("fa-plus fa-minus");
    });

    // $(".add").on("click", function () {
    //   if ($(this).prev().val() < 999) {
    //     $(this)
    //       .prev()
    //       .val(+$(this).prev().val() + 1);
    //   }
    // });
    // $(".sub").on("click", function () {
    //   if ($(this).next().val() > 1) {
    //     if ($(this).next().val() > 1)
    //       $(this)
    //       .next()
    //       .val(+$(this).next().val() - 1);
    //   }
    // });



    if ($(".range-slider-price").length) {
      var priceRange = document.getElementById("range-slider-price");

      noUiSlider.create(priceRange, {
        start: [30, 150],
        limit: 200,
        behaviour: "drag",
        connect: true,
        range: {
          min: 10,
          max: 200
        }
      });

      var limitFieldMin = document.getElementById("min-value-rangeslider");
      var limitFieldMax = document.getElementById("max-value-rangeslider");

      priceRange.noUiSlider.on("update", function (values, handle) {
        (handle ? $(limitFieldMax) : $(limitFieldMin)).text(values[handle]);
      });
    }


    /**
     * 处理商品详情页的的 tab 标签
     */
    if ($(".tabs-box").length) {
      $(".tabs-box .tab-buttons .tab-btn").on("click", function (e) {
        e.preventDefault();
        var target = $($(this).attr("data-tab"));

        if ($(target).is(":visible")) {
          return false;
        } else {
          target
            .parents(".tabs-box")
            .find(".tab-buttons")
            .find(".tab-btn")
            .removeClass("active-btn");
          $(this).addClass("active-btn");
          target
            .parents(".tabs-box")
            .find(".tabs-content")
            .find(".tab")
            .fadeOut(0);
          target
            .parents(".tabs-box")
            .find(".tabs-content")
            .find(".tab")
            .removeClass("active-tab");
          $(target).fadeIn(300);
          $(target).addClass("active-tab");
        }
      });
    }
    if ($(".circle-progress").length) {
      $(".circle-progress").appear(function () {
        let circleProgress = $(".circle-progress");
        circleProgress.each(function () {
          let progress = $(this);
          let progressOptions = progress.data("options");
          progress.circleProgress(progressOptions);
        });
      });
    }
    /**
     * 处理分类的动态过滤的 li 标签
     */
    if ($(".post-filter").length) {
      var postFilterList = $(".post-filter li");
      // for first init
      $(".filter-layout").isotope({
        filter: ".filter-item",
        animationOptions: {
          duration: 500,
          easing: "linear",
          queue: false
        }
      });
      // on click filter links
      postFilterList.on("click", function () {
        var Self = $(this);
        var selector = Self.attr("data-filter");
        postFilterList.removeClass("active");
        Self.addClass("active");

        $(".filter-layout").isotope({
          filter: selector,
          animationOptions: {
            duration: 500,
            easing: "linear",
            queue: false
          }
        });
        return false;
      });
    }

    if ($(".post-filter.has-dynamic-filter-counter").length) {
      // var allItem = $('.single-filter-item').length;

      var activeFilterItem = $(".post-filter.has-dynamic-filter-counter").find(
        "li"
      );

      activeFilterItem.each(function () {
        var filterElement = $(this).data("filter");
        var count = $(".filter-layout").find(filterElement).length;
        $(this).append("<sup>[" + count + "]</sup>");
      });
    }
  });

  // window scroll event

  $(window).on("scroll", function () {
    if ($(".stricked-menu").length) {
      var headerScrollPos = 130;
      var stricky = $(".stricked-menu");
      if ($(window).scrollTop() > headerScrollPos) {
        stricky.addClass("stricky-fixed");
      } else if ($(this).scrollTop() <= headerScrollPos) {
        stricky.removeClass("stricky-fixed");
      }
    }
    if ($(".scroll-to-top").length) {
      var strickyScrollPos = 100;
      if ($(window).scrollTop() > strickyScrollPos) {
        $(".scroll-to-top").fadeIn(500);
      } else if ($(this).scrollTop() <= strickyScrollPos) {
        $(".scroll-to-top").fadeOut(500);
      }
    }
  });
})(jQuery);